package com.example.demo5tcp2;

import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

/**
 * 目标：实现TCP通信下多发多收：客户端开发。
 */
public class ClientDemo1 {
    public static void main(String[] args) throws Exception {
        System.out.println("客户端启动....");
        // 1.常见Socket管道对象，请求服务端的Socket链接。可靠链接
        Socket socket = new Socket("localhost", 9999);

        // 2.从socket管道中得到一个字节输出流对象
        OutputStream os = socket.getOutputStream();

        // 3.使用特殊数据流 优点，就是可以发送整形也可以发送字符串
        DataOutputStream dos = new DataOutputStream(os);
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请输入：");
            String msg = sc.nextLine();
            if ("exit".equals(msg)) {
                System.out.println("客户端退出");
                dos.close(); // 关闭输出流 不用在单独的关闭os因为os包装在类dos中会自动的去关闭
                socket.close(); // 关闭socket
                break;
            }
            dos.writeUTF(msg); // 发送数据
            dos.flush(); // 刷新缓冲区
        }
    }
}
